/*
 * @(#)MetadataDC.java 0.0.1-SNAPSHOT
 * Copyright Group B
 */

package grupb.upf.XMLObjects;

/**
 * <p>This is the interface of the MetadataDC objects. It allows us to manage
 * the Metadata of different objects using the Dublin Core standard.</p>
 *
 * @version    0.0.1-SNAPSHOT
 * @author     Group B
 */
public interface MetadataDC {
    /**
     * Method to set a new metadata of the category "Content".
     * @param property the name of the metadata
     * @param value the value of the metadata
     */
    void setContentProperty(String property, String value);
    /**
     * Method to get the value of a metadata.
     * @param property the name of the metadata
     * @return the value of the metadata
     */
    String getContentProperty(String property);
    /**
     * Method to get the names of the created metadata.
     * @return the names of the created metadata of this cathegory
     */
    String [] getContentPropertyNames();
    /**
     * Method to remove a metadata.
     * @param property the name of the metadata to remove
     */
    void removeContentProperty(String property);
    /**
     * Method to set a new metadata of the category "Intellectual Property".
     * @param property the name of the metadata
     * @param value the value of the metadata
     */
    void setIntellectualProperty(String property, String value);
    /**
     * Method to get the value of a metadata.
     * @param property the name of the metadata
     * @return the value of the metadata
     */
    String getIntellectualProperty(String property);
    /**
     * Method to get the names of the created metadata.
     * @return the names of the created metadata of this cathegory
     */
    String [] getIntellectualPropertyNames();
    /**
     * Method to remove a metadata.
     * @param property the name of the metadata to remove
     */
    void removeIntellectualProperty(String property);
    /**
     * Method to set a new metadata of the category "Instantiation".
     * @param property the name of the metadata
     * @param value the value of the metadata
     */
    void setInstantiationProperty(String property, String value);
    /**
     * Method to get the value of a metadata.
     * @param property the name of the metadata
     * @return the value of the metadata
     */
    String getInstantiationProperty(String property);
    /**
     * Method to get the names of the created metadata.
     * @return the names of the created metadata of this cathegory
     */
    String [] getInstantiationPropertyNames();
    /**
     * Method to remove a metadata.
     * @param property the name of the metadata to remove
     */
    void removeInstantiationProperty(String property);
}
